﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DSS_XNA.Engine.Script.Variables
{
    public interface IVariable
    {
        Type DotNetSimilarType { get; }
        VariableType Type { get; }
        string TypeName { get; }

        object Value { get; set; }
        object DefaultValue { get; }

        string Name { get; set; }

        VariableScope Scope { get; set; }

        void Reset();
        IVariable Add(IVariable var);
        IVariable Subtract(IVariable var);
        IVariable Multiply(IVariable var);
        IVariable Divide(IVariable var);

        IVariable Add(object val);
        IVariable Subtract(object val);
        IVariable Multiply(object val);
        IVariable Divide(object val);

        VariableCompareResult Compare(IVariable var);
    }
}
